// ==UserScript==
// @name         njust一键评教脚本
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  自动打开评价页面并进行评价
// @author       lcy
// @match        *://*/njlgdx/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // 函数：依次在新标签页中打开一组URL
    function openUrlsSequentially(urls, index) {
        if (index >= urls.length) return; // 如果所有URL都已打开，结束递归
        let newTab = window.open(urls[index], '_blank'); // 打开新标签页
        newTab.focus(); // 聚焦新标签页
        newTab.onload = () => openUrlsSequentially(urls, index + 1); // 当新标签页加载完毕后，继续打开下一个URL
    }

    // 获取表格中所有匹配的链接
    let links = Array.from(document.querySelectorAll('a[title="点击进入评价"]'))
        .filter(a => ['理论课评教', '理论课评课', '实验课评课', '体育课评教'].includes(a.textContent.trim()));

    // 提取链接的URL
    let urls = links.map(link => link.href);

    // 创建按钮
    let button = document.createElement('button');
    button.textContent = '开始自动评价';
    button.style.position = 'fixed';
    button.style.top = '10px';
    button.style.right = '10px';
    button.style.zIndex = 1000;
    document.body.appendChild(button);

    // 添加按钮点击事件监听器，点击后依次打开URL
    button.addEventListener('click', () => openUrlsSequentially(urls, 0));
        // 定义函数来点击评价按钮
    function clickEvaluateButtons() {
        const evaluateButtons = document.querySelectorAll('a[href*="xspj_edit.do"]');

        let index = 0;

        function clickNextButton() {
            if (index < evaluateButtons.length) {
                const button = evaluateButtons[index];
                if (button.innerText.trim() === "评价") {
                    button.click();
                    setTimeout(() => {
                        index++;
                        clickNextButton();
                    }, 100); // 等待100毫秒后点击下一个按钮，调整这个时间以确保页面加载完成
                } else {
                    index++;
                    clickNextButton();
                }
            } else {
                document.getElementById('btnShenshen').click();
            }
        }

        clickNextButton();
    }

    // 页面加载完毕后执行函数
    // window.addEventListener('load', clickEvaluateButtons);
    setTimeout(() => {
        clickEvaluateButtons();
    }, 100); // 延迟0.1秒自动执行函数

        // 检查页面是否包含“学生评教”以及“课程名称”
    if (document.body.innerText.includes('学生评教') && document.body.innerText.includes('课程名称：')) {
        // 自动选择选项
        const rows = document.querySelectorAll('#table1 tr');
        rows.forEach((row, index) => {
            const inputs = row.querySelectorAll('input[type="radio"]');
            if (inputs.length > 0) {
                if (index === rows.length - 1) {
                    inputs[1].checked = true; // 选择第二个选项 “较符合”
                } else {
                    inputs[0].checked = true; // 选择第一个选项 “很符合”
                }
            }
        });

        // 自动点击确认按钮
        const clickConfirmButton = () => {
            const buttons = document.querySelectorAll('button, input[type="button"]');
            buttons.forEach(button => {
                if (button.innerText === '确定' || button.value === '确定') {
                    button.click();
                }
            });
        };

        // 监听并自动点击所有弹出框的确认按钮
        window.confirm = function(message) {
            setTimeout(() => {
                clickConfirmButton();
            }, 100); // 延迟0.1秒自动点击确定按钮
            return true; // 默认返回确认
        };

        // 模拟点击提交按钮
        setTimeout(() => {
            document.getElementById('issubmit').value = "1";
            document.getElementById('Form1').submit();
        }, 10000); // 延迟10秒后点击提交按钮

        // 监听保存成功的提示并自动点击确认按钮和关闭窗口
        const observer = new MutationObserver(mutations => {
            mutations.forEach(mutation => {
                const nodes = Array.from(mutation.addedNodes);
                nodes.forEach(node => {
                    if (node.nodeType === Node.ELEMENT_NODE && node.innerText.includes('保存成功')) {
                        setTimeout(() => {
                            clickConfirmButton();
                            setTimeout(() => {
                                window.close(); // 关闭窗口
                            }, 500); // 延迟0.5秒后关闭窗口
                        }, 100); // 延迟0.1秒自动点击确定按钮
                    }
                });
            });
        });

        // 观察页面变化
        observer.observe(document.body, { childList: true, subtree: true });

        // 定期检查并点击确认按钮（以防观察器漏掉某些变化）
        setInterval(clickConfirmButton, 1000); // 每秒检查一次
    }
})();
